<template>
  <div style="position: relative">
    <div class="total">
      {{ $t('productTotal') }}: {{ total }}
    </div>
    <div id="bar" ref="bar" />
  </div>
</template>

<script>
// 这里可以导入其他文件（比如：组件，工具js，第三方插件js，json文件，图片文件等等）
// 例如：import 《组件名称》 from '《组件路径》'
import * as echarts from 'echarts'
export default {
  // name属性
  name: 'ProductQuantity',
  // import引入的组件需要注入到对象中才能使用
  components: {},
  data() {
    // 这里存放数据
    return {
      total: 0
    }
  },
  // 监听属性 类似于data概念
  computed: {},
  // 监控data中的数据变化
  watch: {},
  // 生命周期 - 创建完成（可以访问当前this实例）
  created() { },
  // 生命周期 - 挂载完成（可以访问DOM元素）
  mounted() {
    // this.init()
  },
  beforeCreate() { }, // 生命周期 - 创建之前
  beforeMount() { }, // 生命周期 - 挂载之前
  beforeUpdate() { }, // 生命周期 - 更新之前
  updated() { }, // 生命周期 - 更新之后
  beforeDestroy() { }, // 生命周期 - 销毁之前
  destroyed() { }, // 生命周期 - 销毁完成
  activated() { },
  // 方法集合
  methods: {
    calMax(array) {
      let max = 0
      if (array.length > 0) {
        max = Math.max(...array)
      }
      const maxint = Math.ceil(max / 8), // 不让最高的值超过最上面的刻度
        maxval = maxint * 10 // 让显示的刻度是整数
      return maxval
    },
    init(data, total) {
      this.total = total
      const that = this,
        labelData = data.map((item) => item.dateDD),
        valueData = data.map((item) => item.count),
        charts = echarts.init(this.$refs.bar),
        option = {
          // color: ['#3398DB'],
          tooltip: {
            trigger: 'axis',
            formatter: this.$t('amount') + ': {c}',
            axisPointer: {
              // 坐标轴指示器，坐标轴触发有效
              type: 'shadow' // 默认为直线，可选为：'line' | 'shadow'
            }
          },
          grid: {
            left: '3%',
            right: '4%',
            bottom: '3%',
            containLabel: true
          },
          // 图例设置
          legend: {
            top: 25,
            left: 10,
            icon: 'circle',
            itemHeight: 6, // 修改icon图形大小
            itemGap: 24,
            textStyle: {
              fontSize: 14,
              color: '#FFFFFF',
              padding: [0, 0, 0, -8] // 修改文字和图标距离
            }
          },
          xAxis: [
            {
              type: 'category',
              data: labelData,
              axisTick: {
                alignWithLabel: true
              },
              axisLabel: {
                align: 'center',
                interval: 0,
                rotate: 0,
                color: '#FFFFFF'
              }
            }
          ],
          yAxis: [
            {
              type: 'value',
              min: 0,
              max: this.calMax(valueData),
              axisLabel: {
                interval: 0,
                rotate: 0,
                color: '#FFFFFF'
              }
            }
          ],
          series: [
            {
              stack: 'chart',
              z: 3,
              label: {
                position: 'top',
                show: true,
                color: '#FFFFFF',
                formatter: function(value) {
                  return (value.data / 1000).toFixed(2) + that.$t('thousand')
                }
              },
              name: this.$t('productQuantity') + '：' + this.$t('data_of_the_last_5_days'),
              type: 'bar',
              barWidth: 20,
              color: '#FF3399',
              data: valueData
            }
          ]
        }
      charts.setOption(option)
    }
  }
}
</script>

<style lang="scss" scoped>
//@import url(); 引入公共css类
#bar {
  width: 488px;
  height: 315px;
  background-color: rgba(30, 64, 138, 1);
}

.total {
  position: absolute;
  top: 6px;
  left: 28px;
  color: #ffffff;
  font-size: 14px;
  z-index: 111;
}
</style>
